package VideoJuego;

/*
*/

import java.io.IOException;
import java.util.Random;
import java.util.Stack;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.Sprite;

/**
 * Clase que crea objetos de tipo arma que dañan al personaje
 *
 * Desarrolladores:
 * Equipo: The Dream Team
 *  @author José Francisco Ruiz Martínez 	A01166298
 *  @author José Héctor Bermúdez Robles		A01161142
 *  @author Arturo Ramírez Morales		A01165819
 *  @version 1.0 Noviembre 2010
 */

public class Enemigo{

    private Random seleccionarArma;
    private int tipoArma, valor=0,posicionY=0, posicionX = 195,contador=0;
    private Sprite arma;

    /**
     * Se encarga de crear armas aleatoriamente que se dibujaran en la pista
     * @param y indica en q posicion se puede considerar para dibujar
     * @throws IOException si no encuentra las imagenes lanza una exepción
     */
    public Enemigo(int y) throws IOException {
        this.contador = 0;
        seleccionarArma = new Random();
        this.posicionY = y + seleccionarArma.nextInt(40);
        tipoArma = seleccionarArma.nextInt(2);
        switch (tipoArma) {
            case 1:
                arma = new Sprite(Image.createImage("/ImagenesJuego/rata.png"), 60, 50);
                arma.setPosition(posicionX, posicionY);
                valor = -30;
                break;
            case 2:
                arma = new Sprite(Image.createImage("/ImagenesJuego/bache.png"), 60, 60);
                arma.setPosition(posicionX, posicionY);
                valor = -40;
                break;

           default:
              arma = new Sprite(Image.createImage("/ImagenesJuego/bache.png"), 60, 60);
              arma.setPosition(posicionX, posicionY);
              valor = -40;
              break;
        }
    }
     /**
     * Regresa la basura que se creó
     * @return Regresa la imagen de tipo sprite
     */
    public Sprite getArma() {
        return arma;
    }

    /**
     * Actualiza la posición en la que se dibuja la basura en la pantalla de acuerdo a la
     * posición en la que se encuentra el fondo
     * @param moverObjetos indica hacia qué dirección se tiene que mover la basura
     */
    public void actualizar(int moverObjetos) {

        mover();
        //Se mueve hacia la derecha o izq la basura
        if (moverObjetos == 1) {
            arma.move(0, -2);
        } else if (moverObjetos == 2) {
            arma.move(0, 2);
        }
    }

    /**
     * Mueve el sprite y cambia de frame dependiendo en que cordenada se encuentre la basura.
     * Esto con el objetvo de crear un efecto de que el personaje se acerca a la basura
     */
    public void mover() {
        this.arma.move(-3, 0);
        contador += 1;
        if (contador == 10 && arma.getRefPixelX() > 90) {
            this.arma.nextFrame();
            contador = 0;
        }

    }

    /**
     * Destruye la arma
     */
    public void destruir() {
    seleccionarArma=null;
    arma=null;
    tipoArma=0;
    contador=0;
    posicionY=0;
    posicionX = 180;
    valor=0;
    }

    /**
     * Dibuja la basura en la pantalla la basura
     * @param g indica en donde se dibujara la basura
     */
    public void dibujar(Graphics g) {
        this.arma.paint(g);
    }

    /**
     *
     * @return Regresa el valor de la basura que se ha creado
     */
    public int getValorArma() {
        return valor;
    }
}
